home *** CD-ROM | disk | FTP | other *** search
/ Floppyshop 2 / Floppyshop - 2.zip / Floppyshop - 2.iso / diskmags / 4671-5.790 / dmg-5789 / stp / stos_03.stp / stos_03.stp
Text File  |  1998-10-23  |  10KB  |  236 lines

  1.  
  2.  
  3.                                 STOS FOR STARTERS
  4.  
  5.                                      PART 3
  6.  
  7.                                  BY: BRYN JONES
  8.  
  9.      Welcome  to this month's Stos tutorial - after last months' you will  have 
  10. (hopefully)  managed  to  grasp the basics of string  variables  (and  handling 
  11. them).  This  month  we're  going to be looking at quite a  few  new  commands, 
  12. namely:  MODE,  COLOUR,  REPEAT...UNTIL..., IF...THEN...[ELSE], RND, WAIT, PEN, 
  13. INKEY$, GOTO, LLIST, RENUM, and NEW/UNNEW.  But first I think there's a need to 
  14. further explain some of the basics of using Stos...
  15.  
  16.      I know we've  covered the LIST command and it's use  before, but there are
  17. some more features of the command that need explaining.  As you start to create 
  18. bigger and more complex programs, you may find that  the whole program  listing 
  19. won't  fit into  a single screen. Well, to  combat this, as you list a program, 
  20. you  can pause the display by pressing Space - and space  again to continue the 
  21. listing.  Whilst listing,  if you  wish  to edit the section of code on screen, 
  22. simply hit Escape - this will bring up the text cursor,  and you can edit away! 
  23. You can also actually specify which lines you want to list - the format of this 
  24. is:-
  25.  
  26. list FIRST-LAST
  27.  
  28.      FIRST being the first line,  and LAST being the last.  Or if you want  you 
  29. can display all the lines from a certain point, like this:-
  30.  
  31. list FIRST-
  32.  
  33.      Or all the lines up to a point:-
  34.  
  35. list -LAST
  36.  
  37.      There is also a very similar command to LIST,  which is LLIST - this  does 
  38. exactly the same - except it outputs to a printer, instead of the screen.
  39.  
  40.      Another  useful command to know - when using  the editor -  is  NEW.  This 
  41. will  erase  the current program from memory - it's always safest  to  do  this 
  42. before  loading another program  from disk, or especially if you  want to start 
  43. writing  a  new  program.  The format of the command is simple  (there  are  no 
  44. parameters):-
  45.  
  46. new
  47.  
  48.      Note that as with LIST,  this is a DIRECT COMMAND - so you don't need  any 
  49. line numbers before the command.
  50.  
  51.      If  you find you've accidentally erased a program with NEW,  and  want  to 
  52. bring  it back,  you can type UNNEW - although this can only be  used  straight 
  53. after you've used NEW - i.e. before you've entered any other commands.
  54.  
  55.      Okay,  I hope the above was useful to those of you without a  manual,  who 
  56. were having difficulty in general using Stos. Let's continue with the tutorial, 
  57. shall we?
  58.  
  59.      First it's probably a good idea to reload last months' little program into 
  60. Stos - assuming you saved it of course!
  61.  
  62.      Edit the first line (from last months program) to look like this:-
  63.  
  64. 10 key off : mode 0 : hide : curs off : colour 3,$700
  65.  
  66.      You're probably wondering what the new commands do - let me explain. First 
  67. we have MODE - this command allows you to change between resolutions:  0 = Low; 
  68. 1 = Med;  and 2 = High.  We want to be in low resolution for this  program,  so 
  69. that's  why  we've  got  "mode  0".   Whenever  Stos  switches  resolutions, it 
  70. automatically clears the screen - this is why we've removed the "cls" from  the 
  71. first line - there's no need for it anymore. 
  72.  
  73.      The  second  new  command we have is COLOUR - this let's  you  change  the 
  74. colours  of the screen palette.  There are 16 colour indexes in Low  resolution 
  75. (0-15), 4 in Med (0-3), and just 2 in High (0-1). The format of COLOUR is:-
  76.  
  77. colour INDEX,$RGB
  78.  
  79.      INDEX being,  of course,  the colour index number. $RGB is the value (i.e. 
  80. colour) given to the index. The reason there is a dollar sign  before the value 
  81. is  because it's a Hexadecimal number - don't worry about what this  means  for 
  82. the moment, though - I don't want to start getting  into the more complex stuff 
  83. just yet!  Anyway,  back to explaining how to use COLOUR. Each digit of $RGB is 
  84. given  a value of 0 to 7 - the first digit controls Red intensity,  the  second 
  85. Green,  and the third Blue.  These three colours are, in fact, the true primary 
  86. colours - and not Red,  Yellow, and Blue as most would think. It's difficult to 
  87. explain  just what values give which colours,  so it's best to just  experiment 
  88. and  find out for yourself.  There should be a Stos listing on the disk  called 
  89. "COL_TEST.BAS" - if Dave had enough room to fit it in - which will allow you to 
  90. mix colours with ease. Just list the program and read the instructions.
  91.  
  92.      In case you're wondering,  the reason we're  changing colour 3  is because 
  93. the  colour is the same as the background colour (which is colour 0).  If  we'd 
  94. left it, anything printed with colour 3 wouldn't have shown up. 
  95.  
  96.      The  next  4  lines (20-50) of the program are the same  as  the  previous 
  97. months' - so need to do any editing there.
  98.  
  99.      We're  going  to insert a new line (55) now.  The line  should  look  like 
  100. this:-
  101.  
  102. 55 repeat
  103.  
  104.      REPEAT  is  a  new command,  or perhaps more accurately,  part  of  a  new 
  105. command.  It is used in conjunction with UNTIL.  These commands form a type  of 
  106. loop - a certain section of code is looped until a condition is met. Like so:-
  107.  
  108. repeat
  109.  
  110. [CODE TO LOOP]
  111.  
  112. until [CONDITION IS MET]
  113.  
  114.      This is an  extremely useful type of loop, and is one of the most  common. 
  115. The  UNTIL command comes later on in the program,  so I'll describe it in  more 
  116. detail then.
  117.  
  118.      We need to insert another new line too, so put this in:-
  119.  
  120. 57 C0L0UR=rnd(15) : if C0L0UR=0 then goto 57 else pen C0L0UR
  121.  
  122.      This  line serves as an introduction to numeric variables -  C0L0UR  (note 
  123. the "0"s instead of "O"s,  which would've turned it into the COLOUR command) is 
  124. a  numeric variable - you can tell this because there is no dollar sign at  the 
  125. end  of  the name,  like there is with string variables.  
  126.  
  127.      RND(NUM)  is used to generate a random number.  NUM is the maximum  number 
  128. to be generated. The command in this case means that C0L0UR is given a value of 
  129. 0-15 (because, as I've said before, computers count from 0). 
  130.  
  131.      IF...THEN... is  a very useful instruction.  It allows you  to check for a 
  132. certain  condition then, if true, act  upon it. The -optional- ELSE (as used in 
  133. the  above  line) is executed if the condition was false.  GOTO  instructs  the 
  134. computer to go to a certain line in a program - virtually all programs have  at 
  135. least one of these tucked away somewhere.  The use of the IF...THEN... and GOTO 
  136. commands,  in this case, are to insure that C0L0UR cannot be given a value of 0 
  137. -  you'll see why after I've explained the next  command. The PEN command tells 
  138. the computer to use colour index NUM to print any text:-
  139.  
  140. pen NUM
  141.  
  142.      So  that's why we don't want to give C0L0UR a value of 0 - as this is  the 
  143. background colour, remember?
  144.  
  145.      In fact, there is probably a better way of coding the above line, and that 
  146. is like this:-
  147.  
  148. 57 C0L0UR=rnd(14)+1 : pen C0L0UR
  149.  
  150.      This  also insures that a value of 0 isn't returned for C0L0UR -  it  does 
  151. this  by generating a random number from 0 to 14,  then adding one -  giving  a 
  152. final value of 1-15. 
  153.  
  154.      Whatever method you decide to use in the  end doesn't matter, it just goes 
  155. to show there's virtually always more than one way of going about things.
  156.  
  157.      The next line needed to be altered is line 70:-
  158.  
  159. 70 wait 10
  160.  
  161.      WAIT is very similar to WAIT KEY, except you instruct the computer to wait 
  162. for a certain time - instead of until a key is pressed. The time is measured in 
  163. 50ths of a second - so "wait 50" would pause the program for a second.  Without 
  164. the  WAIT,  the program would run too fast - so it's there to slow the  program 
  165. down a bit!
  166.  
  167.      Another new line now:-
  168.  
  169. 80 until inkey$=" "
  170.  
  171.      This  line completes the REPEAT...UNTIL...  loop - all the code  inbetween 
  172. the instructions will be repeated until the condition is met.  INKEY$ is what's 
  173. called,  a RESERVED VARIABLE.  It allows you to check for key presses.  In this 
  174. case we're checking for the Space bar.  It is quite often used to check for key 
  175. presses in this context:-
  176.  
  177. repeat : K$=inkey$ : until K$<>""
  178.  
  179.      This  assigns the value contained  in INKEY$ to  K$. Then the "K$<>"""  bit 
  180. checks to see if K$ -doesn't- equal nothing (nothing being "" in string  terms) 
  181. -  if it equals something (i.e.  doesn't equal nothing...  are you  still  with 
  182. me?!)  then  the loop is broken.  After the loop is broken you  can  check  for 
  183. certain key presses like so (this one checks for "a"):-
  184.  
  185. if K$ = "a" then [DO WHATEVER]
  186.  
  187.      Just  in  case you are wondering the "<>" is the  actual  "doesn't  equal" 
  188. part.  There are several others of these CONDITIONS too -  and I'll be  listing 
  189. them all next month.
  190.  
  191.      The last line to add is:-
  192.  
  193. 90 default
  194.  
  195.      Well  that's  the program finished,  but by now your  program  listing  is 
  196. probably  looking  very untidy with loads of inserted lines -  wouldn't  it  be 
  197. great  if we could renumber all the lines to step up in tens again?  No  probs! 
  198. Just use the RENUM direct command:-
  199.  
  200. renum
  201.  
  202.      The above is an example of RENUM in its' most basic form,  but there  many 
  203. other ways to use it:-
  204.  
  205. renum NUM
  206.  
  207.      This sets the first line of your program to line NUM - all the other lines 
  208. will go up in tens from that.
  209.  
  210. renum NUM,STEP
  211.  
  212.      This  is the same as the previous RENUM,  except you can define  the  STEP 
  213. increase - i.e. the program line numbers don't have to go up in tens.
  214.  
  215. renum NUM,STEP,START-END
  216.  
  217.      Again this is the as the previous,  except you can choose to just renumber 
  218. the lines from START to END - instead of them all.
  219.  
  220.      Anyway,  just  to recap,  this is what your program should look  like  now 
  221. (after you've renumbered it):-
  222.  
  223. 10 key off : mode 0 : hide : curs off : colour 3,$700
  224. 20 HELLO$="Hello - I'm Mr "
  225. 30 input "Please Input Your Surname:";SURNAME$
  226. 40 cls
  227. 50 HELLO$=HELLO$+SURNAME$
  228. 60 repeat
  229. 70 C0L0UR=rnd(15) : if C0L0UR=0 then goto 70 else pen C0L0UR
  230. 80 locate 0,12 : centre HELLO$
  231. 90 wait 10
  232. 100 until inkey$=" "
  233. 110 default
  234.  
  235.      That's all for now, see ya next month!
  236.